package com.zdxlz.fcmp.common.security.config;

import com.github.xingfudeshi.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Paths;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Description：接口文档配置类
 * 项目启动之后，访问接口文档地址：http://127.0.0.1:10000/doc.html
 * @Author： fengcheng
 * @Date： 2025/2/18 10:29
 */
@Configuration
@EnableKnife4j
public class Knife4jConfig {

    @Bean
    public Paths getPaths() {
        Paths paths = new Paths();
        paths.addPathItem("com.zdxlz.fcmp.upms.admin", null);
        return paths;
    }

    /**
     * 配置基本信息
     */
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI().info(new Info()
                // 标题
                .title("管理平台 - 接口文档")
                // 描述Api接口文档的基本信息
                .description("管理平台 - 后端服务接口")
                // 版本
                .version("V1.0.0")
                // 设置OpenAPI文档的联系信息，姓名，邮箱。
                .contact(new Contact().name("aman").email("aman@163.com"))
                // 设置OpenAPI文档的许可证信息，包括许可证名称为"Apache 2.0"，许可证URL为"http://springdoc.org"。
                .license(new License().name("Apache 2.0").url("http://springdoc.org"))
        );
    }

    /**
     * 创建了一个api接口的分组
     * 除了配置文件方式创建分组，也可以通过注册bean创建分组
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("app-api")
                // 接口请求路径规则
                .pathsToMatch("/**")
                .build();
    }
}
